package com.jk.common.utils;


import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * Description: DateUtils
 * Author: 豆子高
 * Date: 2025/2/26 10:30
 */
public class LocalDateUtils {


    /**
     * 将时间戳 毫秒 转换成 String类型的日期 yyyy-MM-dd
     */
    public static String timestampConvertString(Long timestamp) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Date.from(Instant.ofEpochMilli(timestamp)).toInstant(), java.time.ZoneId.systemDefault());
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return localDateTime.format(formatter);
    }

    /**
     * 将 String 转换为 LocalTime 格式 并返回 LocalTime
     */
    public static LocalTime stringConvertDateTime(String dateTime) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        return LocalTime.parse(dateTime, formatter);
    }

    /**
     * 将 String 转换为 LocalDate 格式
     */
    public static LocalDate stringConvertDate(String date) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return LocalDate.parse(date, formatter);
    }

    /**
     * 将 LocalDate 转换为 String 格式
     */
    public static String dateConvertString(LocalDate date) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return date.format(formatter);
    }

    /**
     * 将 LocalDate 转换为 String 格式 yyyyMMdd
     */
    public static String dateConvertString(LocalDate date, String format) {

        if (date == null) {
            return null;
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return date.format(formatter);
    }

    /**
     * 将 LocalDateTime 转换为 String 格式
     */
    public static String dateTimeConvertString(LocalDateTime dateTime) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return dateTime.format(formatter);
    }

    /**
     * 将 LocalTime 转换为 String 格式
     */
    public static String dateConvertDateTime(LocalTime earlyStartTime) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        return earlyStartTime.format(formatter);
    }

    public static void main(String[] args) {
        // 获取昨天的日期
        LocalDate yesterday = LocalDate.now().plusDays(-1);
        // 转换成string
        String yesterdayStr = dateConvertString(yesterday);
        // 输出结果
        System.out.println("昨天的日期: " + yesterdayStr);

        System.out.println(timestampConvertString(1741104000000L));
    }


}
